package Utils.delegations;

/**
 * 自定义的Function委托，赋值需要用lambda表达式，或者用实现类
 * "用func包的接口"
 *
 * @author d11yu
 */
@Deprecated()
public interface IFunc<T> {
    /**
     * 无参Function委托
     * 用IProducerWithoutParams
     *
     * @return 返回自定义类型的返回值
     */
    @Deprecated()
    public T invoke();

    /**
     * 有参Function委托
     * 用IProducerWithParams
     *
     * @param objs 输入参数
     * @return 返回自定义类型的返回值
     */
    @Deprecated()
    public T invoke(Object... objs) throws Exception;

    /**
     * 可以选择输出参数的类型
     * 用IProducerWithParamsAndGeneric
     *
     * @param clazz 输出参数类型的类
     * @param objs  传入参数
     * @param <K>   输出参数类型
     * @return
     * @throws Exception
     */
    @Deprecated()
    public <K> K invoke(Class<K> clazz, Object... objs) throws Exception;
}
